home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 026-050 / scopedisk36 / mbrain / mbrain.c < prev   
C/C++ Source or Header  |  1995-03-18  |  61KB  |  1,858 lines

  1. /*   ================================================================  */
  2. /*            MasterBrain.c                       */
  3. /*                      10.1.88  Ver 1.0                       */
  4. /*        Thanks to EA for the IFF routines.                        */
  5. /*      The PD Speech routines are from Rob Peck's Speech Demo        */    
  6. /*       Thanks to the anonymous Atari font creators, (fonts ported    */
  7. /*       to the Amiga. A kludgey hack.....                   */    
  8. /*   ================================================================  */
  9. /*                           (c)Tourmaline Software 10-1-88
  10.                             Dana McPhee           
  11.                                             763 Summer St. #3    
  12.                                             Lynn,MA 01905        
  13.                             E-Mail@ IDCMP,(617)769-3172
  14.                         or Citinet-Boston,(617)439-5699
  15.                         (TRAMIELHUNTER)    
  16. */
  17. #include "types.h"
  18. #include "memory.h"
  19. #include "intuition.h"
  20. #include "gfx.h"
  21. #include "view.h"
  22. #include "fcntl.h"
  23. #include "stdio.h"
  24. #include "exec.h"
  25. #include "gfx.h"
  26. #include "copper.h"
  27. #include "gels.h"
  28. #include "gfxbase.h"
  29. #include "gfxmacros.h"
  30. #include "clip.h"
  31. #include "rastport.h"
  32. #include "layers.h"
  33. #include "text.h"
  34. #include "collide.h"
  35. #include "custom.h"
  36. #include "dmabits.h"
  37. #include "dos.h"
  38. #include "audio.h"
  39. #include "math.h"
  40. #include "nodes.h"
  41. #include "lists.h"
  42. #include "ports.h"
  43. #include "tasks.h"
  44. #include "io.h"
  45. #include "gads.h"
  46. #include "nodes.h"
  47. #include "lists.h"
  48. #include "memory.h"
  49. #include "interrupts.h"
  50. #include "ports.h"
  51. #include "libraries.h"
  52. #include "io.h"
  53. #include "execbase.h"
  54. #include "narrator.h"
  55. #include "translator.h"
  56.  
  57. struct MsgPort *readport=0;
  58. struct MsgPort *writeport=0;
  59. extern struct MsgPort *CreatePort();
  60. extern struct IORequest *CreateExtIO();
  61. struct narrator_rb *writeNarrator=0;
  62. struct mouth_rb *readNarrator=0;
  63. struct Library *TranslatorBase=0;
  64.  
  65. UBYTE *sampleinput;
  66. UBYTE outputstring[500];
  67. SHORT rtnCode;
  68. SHORT readError;
  69. SHORT writeError;
  70. SHORT error;
  71. BYTE audChanMasks[4] = { 3,5,10,12 };
  72. ULONG mex;
  73.  
  74. #define CANT_OPEN_TRANSLATOR -100
  75. #define CANT_OPEN_NARRATOR -200
  76. #define CREATE_PORT_PROBLEMS -300
  77. #define CREATE_IO_PROBLEMS -400
  78. #define CANT_PERFORM_WRITE -500
  79. #define REVISION 1
  80. extern struct Library *OpenLibrary();
  81. #define blitNode bltnode
  82. #define LFTBW 150
  83. #define TOPBW 60
  84. #define TOPGUESS 62
  85. #define LEFTGUESS 98
  86. #define TOPGAD 119
  87. #define FIRSTEDGE 223
  88. #define SWIDTH 20
  89. #define SHEIGHT 15
  90. #define FLAGYES 0x0008
  91. #define FLAGNO 0x0011
  92. #define mskNone 0
  93. #define mskHasMask 1
  94. #define mskHasTransparentColor 2
  95. #define mskLasso 3
  96. #define cmpNone 0
  97. #define cmpByteRun1 1
  98. #define MakeID(a,b,c,d) ( (a)<<24 | (b)<<16 | (c)<<8 | (d) )
  99. #define FORM MakeID('F','O','R','M')
  100. #define LIST MakeID('L','I','S','T')
  101. #define BODY MakeID('B','O','D','Y')
  102. #define BMHD MakeID('B','M','H','D')
  103. #define CMAP MakeID('C','M','A','P')
  104. #define INTUITION_REV 29
  105. #define GRAPHICS_REV 29
  106. #define UGetByte() (*source++)
  107. #define UPutByte(c) (*dest++ = (c))
  108.  
  109. struct Gadget gad[17];
  110. struct Gadget *gad_ptr1;
  111. struct Window *Window1;
  112. struct IntuiMessage *mesg;
  113. struct NewWindow NewWindow;
  114. struct Menu Menu1,Menu2;
  115. struct MenuItem *item,*next;
  116. struct IntuiText t0,t1,t2,t3,xt0,xt1,about_t0,about_t1,about_t2,about_t3,about_t4,about_t5,about_t6;
  117. struct GfxBase *GfxBase;
  118. struct ViewPort *vp;
  119. struct Image *Image;
  120. struct Image background;
  121. struct IntuitionBase *IntuitionBase;
  122. struct MenuItem m0,m1,m2,m3,x0,x1;
  123. struct Screen *Screen;
  124. struct guessn {
  125.   char number;
  126.   int numpos;
  127.   }   gs[4];
  128. BOOL pal_resp1;
  129. SHORT left,top,picked;
  130. SHORT id,x,y,w,h,d;
  131. USHORT mode,itemnum;
  132. ULONG flags;
  133. ULONG mcode,mclass;
  134. ULONG Seconds,Micros;
  135. UBYTE name2[30];
  136. UBYTE *name;
  137. UBYTE *buffer,*tempbuffer,**psource,**pdest;
  138. UBYTE *filebuffer,*tempfilebuffer,*savebuffer;
  139. UWORD BytePerPlane,TotalBytes,plane,BytePerRow;
  140.  
  141. int gvoff,hoff,toff,black,white,posse,ic,gad_xpos;
  142. int ret,status,fd,i;
  143.  
  144. char empty[]="0000";
  145. char pics1[] = "gray_matter";
  146. char answer[] = "0000";
  147. char answer_temp[] = "0000";
  148. char guess[] = "0000";
  149. char guess_temp[]= "0000";
  150. char text1[] = "0123456789";
  151. char wrong[] = "WXYZ";
  152. char wrong2[] = "QRST";
  153. char wrong3[] = "ABCD";
  154. char wrong4[] = "EFGH";
  155.  
  156. VOID InitMen(),InitMenuItem();
  157. typedef unsigned long ID;
  158. struct Chunk
  159.  {
  160.   ID ckID ;
  161.   long ckSize ;
  162.  } ;
  163. struct Chunk chk;
  164.  
  165. main()
  166. {
  167.  get_diskimage(pics1);
  168. }
  169. get_diskimage(pic)
  170. {
  171. typedef UBYTE Masking;
  172. typedef UBYTE Compression;
  173. int numcolors;
  174. USHORT tred,tgreen,tblue;
  175. struct BitMapHeader
  176. {
  177.   UWORD w, h;
  178.   WORD x, y;
  179.   UBYTE nPlanes;
  180.   Masking masking;
  181.   Compression compression;
  182.   UBYTE pad1;
  183.   UWORD transparentColor;
  184.   UBYTE xAspect, yAspect;
  185.   WORD pageWidth, pageHeight;
  186. } ;
  187.  struct BitMapHeader bmhd;
  188.  struct ColorRegister
  189.  {
  190.   UBYTE red, green, blue;
  191.  };
  192. struct ColorRegister ColorMap[32];
  193.   long pos;
  194.   fd=open(pic,O_RDONLY);
  195.   if(fd==-1)
  196.   {
  197.     printf("oops...data file 'gray_matter' missing,Sam.\n");
  198.     exit(FALSE);
  199.   }
  200.   status=read(fd,&chk,sizeof(chk)); 
  201.   pos=lseek(fd,4,1);
  202.   status=read(fd,&chk,sizeof(chk));
  203.   status=read(fd,&bmhd,sizeof(bmhd));
  204.   status=read(fd,&chk,sizeof(chk));
  205.   status=read(fd,&ColorMap[0],chk.ckSize);
  206.   numcolors=chk.ckSize/3;
  207.   status=read(fd,&chk,sizeof(chk));
  208.   while(chk.ckID!=BODY)
  209.   {
  210.        pos=lseek(fd,chk.ckSize,1);
  211.        status=read(fd,&chk,sizeof(chk));
  212.        if(status==NULL)
  213.        {
  214.          printf("oops...No picture,Sam.\n");
  215.          exit(FALSE);
  216.        }
  217.   }
  218.   BytePerRow=(((bmhd.w+15) >> 4) << 1);
  219.   BytePerPlane=BytePerRow*bmhd.h;
  220.   TotalBytes=BytePerPlane*(UWORD)bmhd.nPlanes;
  221.   buffer=(UBYTE *)AllocMem(TotalBytes,MEMF_CHIP);
  222.   if(buffer==NULL)
  223.   {
  224.     printf("no memory for buffer;make some room!\n");
  225.     exit(0);
  226.   }
  227.   filebuffer=(UBYTE *)AllocMem(chk.ckSize,MEMF_CHIP);
  228.   if(filebuffer==NULL)
  229.   {
  230.     printf("Hey, Error! There's not enough ram for the file buffer.\n");
  231.     exit(0);
  232.   }
  233.   savebuffer=buffer;
  234.   tempfilebuffer=filebuffer;
  235.   status=read(fd,filebuffer,chk.ckSize);
  236.   pdest=&tempbuffer;
  237.   psource=&tempfilebuffer;
  238.   for(i=0;i<bmhd.h;i++)
  239.   {
  240.      for(plane=0;plane<bmhd.nPlanes;plane++)
  241.      {
  242.         tempbuffer=buffer+(BytePerRow*i)+(BytePerPlane*plane);
  243.         if(bmhd.compression==cmpByteRun1)
  244.         {
  245.           UnPackBits(psource,pdest,BytePerRow);
  246.         }
  247.      else
  248.      {
  249.           GetBits(psource,pdest,BytePerRow);
  250.      }
  251.   }
  252. }
  253.   open_library();
  254.   open_screen();
  255.   gad[1].NextGadget=&gad[2];
  256.   gad[1].LeftEdge=FIRSTEDGE;
  257.   gad[1].TopEdge=TOPGAD;
  258.   gad[1].Width=SWIDTH;
  259.   gad[1].Height=SHEIGHT;
  260.   gad[1].Flags=NULL;
  261.   gad[1].Activation=GADGIMMEDIATE;
  262.   gad[1].GadgetType=BOOLGADGET;
  263.   gad[1].GadgetRender=NULL;
  264.   gad[1].SelectRender=NULL;
  265.   gad[1].GadgetText=NULL;
  266.   gad[1].MutualExclude=NULL;
  267.   gad[1].SpecialInfo=NULL;
  268.   gad[1].GadgetID=01;
  269.   gad[1].UserData=NULL;
  270.   gad[2].NextGadget=&  gad[3];
  271.   gad[2].LeftEdge=FIRSTEDGE+21;
  272.   gad[2].TopEdge=TOPGAD;
  273.   gad[2].Width=SWIDTH;
  274.   gad[2].Height=SHEIGHT;
  275.   gad[2].Flags=NULL;
  276.   gad[2].Activation=GADGIMMEDIATE;
  277.   gad[2].GadgetType=BOOLGADGET;
  278.   gad[2].GadgetRender=NULL;
  279.   gad[2].SelectRender=NULL;
  280.   gad[2].GadgetText=NULL;
  281.   gad[2].MutualExclude=NULL;
  282.   gad[2].SpecialInfo=NULL;
  283.   gad[2].GadgetID=02;
  284.   gad[2].UserData=NULL;
  285.   gad[3].NextGadget=&  gad[4];
  286.   gad[3].LeftEdge=FIRSTEDGE+42;
  287.   gad[3].TopEdge=TOPGAD;
  288.   gad[3].Width=SWIDTH;
  289.   gad[3].Height=SHEIGHT;
  290.   gad[3].Flags=NULL;
  291.   gad[3].Activation=GADGIMMEDIATE;
  292.   gad[3].GadgetType=BOOLGADGET;
  293.   gad[3].GadgetRender=NULL;
  294.   gad[3].SelectRender=NULL;
  295.   gad[3].GadgetText=NULL;
  296.   gad[3].MutualExclude=NULL;
  297.   gad[3].SpecialInfo=NULL;
  298.   gad[3].GadgetID=03;
  299.   gad[3].UserData=NULL;
  300.   gad[4].NextGadget=&  gad[5];
  301.   gad[4].LeftEdge=FIRSTEDGE;
  302.   gad[4].TopEdge=TOPGAD+15;
  303.   gad[4].Width=SWIDTH;
  304.   gad[4].Height=SHEIGHT;
  305.   gad[4].Flags=NULL;
  306.   gad[4].Activation=GADGIMMEDIATE;
  307.   gad[4].GadgetType=BOOLGADGET;
  308.   gad[4].GadgetRender=NULL;
  309.   gad[4].SelectRender=NULL;
  310.   gad[4].GadgetText=NULL;
  311.   gad[4].MutualExclude=NULL;
  312.   gad[4].SpecialInfo=NULL;
  313.   gad[4].GadgetID=04;
  314.   gad[4].UserData=NULL;
  315.   gad[5].NextGadget=&  gad[6];
  316.   gad[5].LeftEdge=244;
  317.   gad[5].TopEdge=134;
  318.   gad[5].Width=SWIDTH;
  319.   gad[5].Height=SHEIGHT;
  320.   gad[5].Flags=NULL;
  321.   gad[5].Activation=GADGIMMEDIATE;
  322.   gad[5].GadgetType=BOOLGADGET;
  323.   gad[5].GadgetRender=NULL;
  324.   gad[5].SelectRender=NULL;
  325.   gad[5].GadgetText=NULL;
  326.   gad[5].MutualExclude=NULL;
  327.   gad[5].SpecialInfo=NULL;
  328.   gad[5].GadgetID=05;
  329.   gad[5].UserData=NULL;
  330.   gad[6].NextGadget=&  gad[7];
  331.   gad[6].LeftEdge=265;
  332.   gad[6].TopEdge=134;
  333.   gad[6].Width=SWIDTH;
  334.   gad[6].Height=SHEIGHT;
  335.   gad[6].Flags=NULL;
  336.   gad[6].Activation=GADGIMMEDIATE;
  337.   gad[6].GadgetType=BOOLGADGET;
  338.   gad[6].GadgetRender=NULL;
  339.   gad[6].SelectRender=NULL;
  340.   gad[6].GadgetText=NULL;
  341.   gad[6].MutualExclude=NULL;
  342.   gad[6].SpecialInfo=NULL;
  343.   gad[6].GadgetID=06;
  344.   gad[6].UserData=NULL;
  345.   gad[7].NextGadget=&  gad[8];
  346.   gad[7].LeftEdge=223;
  347.   gad[7].TopEdge=148;
  348.   gad[7].Width=SWIDTH;
  349.   gad[7].Height=SHEIGHT;
  350.   gad[7].Flags=NULL;
  351.   gad[7].Activation=GADGIMMEDIATE;
  352.   gad[7].GadgetType=BOOLGADGET;
  353.   gad[7].GadgetRender=NULL;
  354.   gad[7].SelectRender=NULL;
  355.   gad[7].GadgetText=NULL;
  356.   gad[7].MutualExclude=NULL;
  357.   gad[7].SpecialInfo=NULL;
  358.   gad[7].GadgetID=07;
  359.   gad[7].UserData=NULL;
  360.   gad[8].NextGadget=&  gad[9];
  361.   gad[8].LeftEdge=244;
  362.   gad[8].TopEdge=148;
  363.   gad[8].Width=SWIDTH;
  364.   gad[8].Height=SHEIGHT;
  365.   gad[8].Flags=NULL;
  366.   gad[8].Activation=GADGIMMEDIATE;
  367.   gad[8].GadgetType=BOOLGADGET;
  368.   gad[8].GadgetRender=NULL;
  369.   gad[8].SelectRender=NULL;
  370.   gad[8].GadgetText=NULL;
  371.   gad[8].MutualExclude=NULL;
  372.   gad[8].SpecialInfo=NULL;
  373.   gad[8].GadgetID=08;
  374.   gad[8].UserData=NULL;
  375.   gad[9].NextGadget=&  gad[0];
  376.   gad[9].LeftEdge=265;
  377.   gad[9].TopEdge=148;
  378.   gad[9].Width=SWIDTH;
  379.   gad[9].Height=SHEIGHT;
  380.   gad[9].Flags=NULL;
  381.   gad[9].Activation=GADGIMMEDIATE;
  382.   gad[9].GadgetType=BOOLGADGET;
  383.   gad[9].GadgetRender=NULL;
  384.   gad[9].SelectRender=NULL;
  385.   gad[9].GadgetText=NULL;
  386.   gad[9].MutualExclude=NULL;
  387.   gad[9].SpecialInfo=NULL;
  388.   gad[9].GadgetID=09;
  389.   gad[9].UserData=NULL;
  390.   gad[0].NextGadget=&  gad[11];
  391.   gad[0].LeftEdge=244;
  392.   gad[0].TopEdge=163;
  393.   gad[0].Width=SWIDTH;
  394.   gad[0].Height=SHEIGHT;
  395.   gad[0].Flags=GADGHNONE;
  396.   gad[0].Activation=GADGIMMEDIATE;
  397.   gad[0].GadgetType=BOOLGADGET;
  398.   gad[0].GadgetRender=NULL;
  399.   gad[0].SelectRender=NULL;
  400.   gad[0].GadgetText=NULL;
  401.   gad[0].MutualExclude=NULL;
  402.   gad[0].SpecialInfo=NULL;
  403.   gad[0].GadgetID=00;
  404.   gad[0].UserData=NULL;
  405.   gad[11].NextGadget=&  gad[12];
  406.   gad[11].LeftEdge=215;
  407.   gad[11].TopEdge=79;
  408.   gad[11].Width=16;
  409.   gad[11].Height=8;
  410.   gad[11].Flags=GADGIMAGE;
  411.   gad[11].Activation=GADGIMMEDIATE|RELVERIFY|TOGGLESELECT;
  412.   gad[11].GadgetType=BOOLGADGET;
  413.   gad[11].GadgetRender=(APTR)&g11_image;
  414.   gad[11].SelectRender=(APTR)&g12_image;
  415.   gad[11].GadgetText=NULL;
  416.   gad[11].MutualExclude=NULL;
  417.   gad[11].SpecialInfo=NULL;
  418.   gad[11].GadgetID=11;
  419.   gad[11].UserData=NULL;
  420.   gad[12].NextGadget=&  gad[13];
  421.   gad[12].LeftEdge=232;
  422.   gad[12].TopEdge=79;
  423.   gad[12].Width=18;
  424.   gad[12].Height=8;
  425.   gad[12].Flags=GADGIMAGE;
  426.   gad[12].Activation=GADGIMMEDIATE|RELVERIFY|TOGGLESELECT;
  427.   gad[12].GadgetType=BOOLGADGET;
  428.   gad[12].GadgetRender=(APTR)&g12_image;
  429.   gad[12].SelectRender=(APTR)&g12b_image;
  430.   gad[12].GadgetText=NULL;
  431.   gad[12].MutualExclude=NULL;
  432.   gad[12].SpecialInfo=NULL;
  433.   gad[12].GadgetID=12;
  434.   gad[12].UserData=NULL;
  435.   gad[13].NextGadget=&  gad[14];
  436.   gad[13].LeftEdge=251;
  437.   gad[13].TopEdge=79;
  438.   gad[13].Width=18;
  439.   gad[13].Height=8;
  440.   gad[13].Flags=GADGIMAGE;
  441.   gad[13].Activation=GADGIMMEDIATE|RELVERIFY|TOGGLESELECT;
  442.   gad[13].GadgetType=BOOLGADGET;
  443.   gad[13].GadgetRender=(APTR)&g13_image;
  444.   gad[13].SelectRender=(APTR)&g13b_image;
  445.   gad[13].GadgetText=NULL;
  446.   gad[13].MutualExclude=NULL;
  447.   gad[13].SpecialInfo=NULL;
  448.   gad[13].GadgetID=13;
  449.   gad[13].UserData=NULL;
  450.   gad[14].NextGadget=&  gad[15];
  451.   gad[14].LeftEdge=270;
  452.   gad[14].TopEdge=79;
  453.   gad[14].Width=18;
  454.   gad[14].Height=8;
  455.   gad[14].Flags=GADGIMAGE;
  456.   gad[14].Activation=GADGIMMEDIATE|RELVERIFY|TOGGLESELECT;
  457.   gad[14].GadgetType=BOOLGADGET;
  458.   gad[14].GadgetRender=(APTR)&g14_image;
  459.   gad[14].SelectRender=(APTR)&g14b_image;
  460.   gad[14].GadgetText=NULL;
  461.   gad[14].MutualExclude=NULL;
  462.   gad[14].SpecialInfo=NULL;
  463.   gad[14].GadgetID=14;
  464.   gad[14].UserData=NULL;
  465.   gad[15].NextGadget=&  gad[16];
  466.   gad[15].LeftEdge=297;
  467.   gad[15].TopEdge=74;
  468.   gad[15].Width=13;
  469.   gad[15].Height=41;
  470.   gad[15].Flags=GADGIMAGE;
  471.   gad[15].Activation=GADGIMMEDIATE|RELVERIFY|TOGGLESELECT;
  472.   gad[15].GadgetType=BOOLGADGET;
  473.   gad[15].GadgetRender=(APTR)&doneb_image;
  474.   gad[15].SelectRender=(APTR)&done_image;
  475.   gad[15].GadgetText=NULL;
  476.   gad[15].MutualExclude=NULL;
  477.   gad[15].SpecialInfo=NULL;
  478.   gad[15].GadgetID=15;
  479.   gad[15].UserData=NULL;
  480.   gad[16].NextGadget=NULL;
  481.   gad[16].LeftEdge=296;
  482.   gad[16].TopEdge=120;
  483.   gad[16].Width=15;
  484.   gad[16].Height=54;
  485.   gad[16].Flags=GADGIMAGE;
  486.   gad[16].Activation=GADGIMMEDIATE|RELVERIFY|TOGGLESELECT;
  487.   gad[16].GadgetType=BOOLGADGET;
  488.   gad[16].GadgetRender=(APTR)&starta_image;
  489.   gad[16].SelectRender=(APTR)&startb_image;
  490.   gad[16].GadgetText=NULL;
  491.   gad[16].MutualExclude=NULL;
  492.   gad[16].SpecialInfo=NULL;
  493.   gad[16].GadgetID=16;
  494.   gad[16].UserData=NULL;
  495.   gad_xpos=222;
  496.   open_window();
  497.   vp=(struct ViewPort *)ViewPortAddress(Window1);
  498.   for(i=0;i<numcolors;i++)
  499.   {
  500.      tred=(ColorMap[i].red);
  501.      tgreen=(ColorMap[i].green);
  502.      tblue=(ColorMap[i].blue);
  503.      tred>>=4;
  504.      tgreen>>=4;
  505.      tblue>>=4;
  506.      SetRGB4(vp,i,tred,tgreen,tblue);
  507.   }
  508.   background.LeftEdge=0;
  509.   background.TopEdge=0;
  510.   background.Width=bmhd.w;
  511.   background.Height=bmhd.h;
  512.   background.Depth=bmhd.nPlanes;
  513.   background.ImageData=(SHORT *)buffer;
  514.   background.PlanePick=31;
  515.   background.PlaneOnOff=0;
  516.   background.NextImage=NULL;
  517.   Image=&background;
  518.   ShowTitle(Screen,FALSE);
  519.   DrawImage(Window1->RPort,Image,0,0);
  520.   InitMen(&t0,LOWCHECKWIDTH+1,0,"Hide Title");
  521.   mex=0x0E;
  522.   InitMenuItem(&t0,&m0,&m1,5,0,CHECKIT|CHECKED|MENUTOGGLE,mex);
  523.   InitMen(&t1,LOWCHECKWIDTH+1,0,"Show Title");
  524.   mex=0x0D;
  525.   InitMenuItem(&t1,&m1,&m2,5,10,CHECKIT|MENUTOGGLE);
  526.   InitMen(&t2,LOWCHECKWIDTH+1,0,"About");
  527.   mex=0x0B;
  528.   InitMenuItem(&t2,&m2,&m3,5,20,CHECKIT|MENUTOGGLE,mex);
  529.   InitMen(&t3,LOWCHECKWIDTH+1,0,"Quit");
  530.   mex=0x07;
  531.   InitMenuItem(&t3,&m3,NULL,5,30,CHECKIT|MENUTOGGLE,mex);
  532.   Menu1.NextMenu=NULL;
  533.   Menu1.LeftEdge=1;
  534.   Menu1.TopEdge=1;
  535.   Menu1.Width=80;
  536.   Menu1.Height=40;
  537.   Menu1.Flags=MENUENABLED;
  538.   Menu1.MenuName="Options";
  539.   Menu1.FirstItem=&m0;
  540.   SetMenuStrip(Window1,&Menu1,NULL);
  541.   OnGadget(&gad[1],Window1,NULL);
  542.   SetDrMd(Window1->RPort,JAM2);
  543.   SetAPen(Window1->RPort,18);
  544.   SetBPen(Window1->RPort,17);
  545.   Move(Window1->RPort,15,80);
  546.   Text(Window1->RPort,"Correct",7);
  547.   Move(Window1->RPort,13,90);
  548.   Text(Window1->RPort,"Answer:",7);
  549.   SetAPen(Window1->RPort,19);
  550.   SetBPen(Window1->RPort,0);
  551.   speechD();
  552.   rtnCode=Translate("I am the Amiga.",25,outputstring,500);
  553.   writeNarrator->message.io_Data = (APTR)outputstring;
  554.   writeNarrator->message.io_Length = strlen(outputstring);
  555.   DoIO(writeNarrator);
  556.   rtnCode=Translate("I am the Master Brain. Welcome to my little Gayme",90,outputstring,500);
  557.   writeNarrator->message.io_Data = (APTR)outputstring;
  558.   writeNarrator->message.io_Length = strlen(outputstring);
  559.   DoIO(writeNarrator);
  560.   rtnCode=Translate("of logic. You use computers. This should be easy.",90,outputstring,500);
  561.   writeNarrator->message.io_Data = (APTR)outputstring;
  562.   writeNarrator->message.io_Length = strlen(outputstring);
  563.   DoIO(writeNarrator);
  564.   rtnCode=Translate("ha ha ha ha ha ha ha ha ha ha ha ha ha ha",90,outputstring,500);
  565.   writeNarrator->message.io_Data = (APTR)outputstring;
  566.   writeNarrator->message.io_Length = strlen(outputstring);
  567.   DoIO(writeNarrator);
  568.   ReInit();
  569.   GetInput();
  570. }
  571.  
  572. VOID InitMen(sss,left,top,men2)
  573. struct IntuiText *sss;
  574. UBYTE *men2;
  575. {
  576.   sss->FrontPen=5;
  577.   sss->BackPen=7;
  578.   sss->DrawMode=JAM1;
  579.   sss->LeftEdge=left;
  580.   sss->TopEdge=top;
  581.   sss->ITextFont=NULL;
  582.   sss->IText=men2;
  583.   sss->NextText=NULL;
  584. }
  585.  
  586. VOID InitMenuItem(name2,item,next,left,top,flags,mex2)
  587. ULONG mex2;
  588. UBYTE *name2;
  589. USHORT left,top;
  590. ULONG flags;
  591. struct MenuItem *item,*next;
  592. {
  593.   item->NextItem=next;
  594.   item->LeftEdge=left;
  595.   item->TopEdge=top;
  596.   item->Width=100;
  597.   item->Height=10;
  598.   item->Flags=CHECKIT|ITEMTEXT|HIGHCOMP|ITEMENABLED|flags;
  599.   item->MutualExclude=mex;
  600.   item->ItemFill=(APTR)name2;
  601.   item->SelectFill=NULL;
  602.   item->Command=NULL;
  603.   item->SubItem=NULL;
  604. }
  605.  
  606. open_screen(title,detailspen,mode,blockpen)
  607. {
  608. struct NewScreen NewScreen;
  609.   NewScreen.LeftEdge=0;
  610.   NewScreen.TopEdge=0;
  611.   NewScreen.Width=320;
  612.   NewScreen.Height=200;
  613.   NewScreen.Depth=5;
  614.   NewScreen.DetailPen=5;
  615.   NewScreen.BlockPen=3;
  616.   NewScreen.ViewModes=NULL;
  617.   NewScreen.Type=CUSTOMSCREEN;
  618.   NewScreen.Font=NULL;
  619.   NewScreen.DefaultTitle="MasterBrain";
  620.   NewScreen.Gadgets=NULL;
  621.   NewScreen.CustomBitMap=NULL;
  622.   if((Screen=(struct Screen *)OpenScreen(&NewScreen))==NULL)
  623.   {
  624.     printf("oops...Can't open screen,Sam.\n");
  625.     exit(FALSE);
  626.   }
  627. }
  628.  
  629. open_library()
  630. {
  631.   IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",INTUITION_REV);
  632.   if(IntuitionBase==NULL)
  633.   {
  634.     printf("oops...Cannot load InutitionBase,Sam. Enough memory?\n");
  635.     exit (FALSE);
  636.   }
  637.   GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",GRAPHICS_REV);
  638.   TranslatorBase = OpenLibrary("translator.library",REVISION);
  639.   if(TranslatorBase == NULL)
  640.   {
  641.     printf("oops...Translator.library not in libs directory,Sam.\n");
  642.     exit (FALSE);
  643.   }
  644. }
  645.  
  646. open_window()
  647. {
  648.   NewWindow.LeftEdge=0;
  649.   NewWindow.TopEdge=0;
  650.   NewWindow.Width=320;
  651.   NewWindow.Height=200;
  652.   NewWindow.DetailPen=20;
  653.   NewWindow.BlockPen=30;
  654.   NewWindow.Title=NULL;
  655.   NewWindow.Flags=SMART_REFRESH|WINDOWCLOSE|BORDERLESS|BACKDROP;
  656.   NewWindow.IDCMPFlags=MOUSEBUTTONS|GADGETUP|MENUPICK|GADGETDOWN;
  657.   NewWindow.Type=CUSTOMSCREEN;
  658.   NewWindow.FirstGadget=&  gad[1];
  659.   NewWindow.CheckMark=NULL;
  660.   NewWindow.Screen=Screen;
  661.   NewWindow.BitMap=NULL;
  662.   NewWindow.MinWidth=0;
  663.   NewWindow.MinHeight=0;
  664.   NewWindow.MaxHeight=200;
  665.   NewWindow.MaxWidth=320;
  666.   if((Window1=(struct Window *)OpenWindow(&NewWindow))==NULL)
  667.   {
  668.     printf("oops...Can't open window,Sam.\n");
  669.     exit (FALSE);
  670.   }
  671. }
  672.  
  673. GetBits(psource,pdest,dstBytes0)
  674. BYTE **psource, **pdest; WORD dstBytes0;
  675. {
  676. register BYTE *source= *psource;
  677. register BYTE *dest= *pdest;
  678. register WORD dstBytes= dstBytes0;
  679.   while(dstBytes>0)
  680.   {
  681.        UPutByte(UGetByte());
  682.        dstBytes-=1;
  683.   }
  684.   *psource=source; *pdest=dest;
  685. }
  686.  
  687. UnPackBits(psource,pdest,dstBytes0)
  688. BYTE **psource, **pdest; WORD dstBytes0;
  689. {
  690.   register BYTE *source= *psource;
  691.   register BYTE *dest = *pdest;
  692.   register BYTE n;
  693.   register BYTE c;
  694.   register WORD dstBytes = dstBytes0;
  695.   WORD minus128= -128;
  696.   while(dstBytes > 0)
  697.   {
  698.        n=UGetByte();
  699.        if(n>=0)
  700.        {
  701.          n+=1;
  702.          dstBytes -= n;
  703.        do{
  704.           UPutByte(UGetByte()); 
  705.          }
  706.          while(--n>0);
  707.        }
  708.        else if(n != minus128)
  709.        {
  710.              n= -n + 1;
  711.              dstBytes -=n;
  712.              c=UGetByte();
  713.             do{
  714.               UPutByte(c);
  715.             }
  716.             while(--n >0);
  717.        }
  718.   }
  719.   *psource=source; *pdest=dest;
  720. }
  721.  
  722.  
  723. GetInput()
  724. {
  725.   for(;;)
  726.   {
  727.      Wait(1<<Window1->UserPort->mp_SigBit);
  728.      while((mesg=(struct IntuiMessage *) GetMsg(Window1->UserPort))!=NULL)
  729.      {
  730.           mclass=mesg->Class;
  731.           mcode=mesg->Code;
  732.           gad_ptr1=(struct Gadget *)(mesg->IAddress);
  733.           picked=gad_ptr1->GadgetID;
  734.           ReplyMsg(mesg);
  735.           if(mclass == MENUPICK && mcode != MENUNULL)
  736.           {
  737.             itemnum = ITEMNUM(mcode);
  738.             switch(itemnum)
  739.             {
  740.                   case 0:
  741.                       ShowTitle(Screen, FALSE);
  742.                       break;
  743.                   case 1:
  744.                       ShowTitle(Screen, TRUE);
  745.                       break;
  746.                   case 2:
  747.                       About();
  748.                       break;
  749.                   case 3:
  750.                       CloseThings();
  751.                       break;
  752.             }
  753.           }
  754.           if(mclass==GADGETDOWN)
  755.           {
  756.             gad_filter(picked);
  757.           }
  758.      }
  759.   }
  760. }
  761.  
  762. CloseThings()
  763. {
  764.  int fet,ret;
  765.   if(writeNarrator != 0)
  766.     CloseDevice(writeNarrator);
  767.   if(readNarrator != 0)
  768.     DeleteExtIO(readNarrator,sizeof(struct mouth_rb));
  769.   if(writeNarrator != 0)
  770.     DeleteExtIO(writeNarrator,sizeof(struct narrator_rb));
  771.   if(readport != 0)
  772.     DeletePort(readport);
  773.   if(writeport != 0)
  774.     DeletePort(writeport);
  775.   ClearMenuStrip(Window1);
  776.   status=close(fd);
  777.   CloseWindow(Window1);
  778.   CloseScreen(Screen);
  779.   if(TranslatorBase != 0)
  780.     CloseLibrary(TranslatorBase);
  781.     CloseLibrary(IntuitionBase);
  782.     ret=FreeMem(buffer,TotalBytes);
  783.   if(ret==0)
  784.   {
  785.     printf("buffer dealocation failed\n");
  786.   }
  787.   fet=FreeMem(filebuffer,chk.ckSize);
  788.   if(fet==0)
  789.   {
  790.     printf("filebuffer dealocation failed\n");
  791.   }
  792.   exit(FALSE);
  793. }
  794.  
  795. Text_hand()
  796. {
  797.   Move(Window1->RPort,gad_xpos,106);
  798.   Text(Window1->RPort,&text1[ic],1);
  799.   guess[posse]=text1[ic];
  800. }
  801.  
  802. gad_filter(pick1)
  803. SHORT pick1;
  804. {
  805.   switch(pick1)
  806.   {
  807.         case 0:
  808.             ic=0;
  809.             Text_hand();
  810.             break;
  811.         case 1:
  812.             ic=1;
  813.             Text_hand();
  814.             break;
  815.         case 2:
  816.             ic=2;
  817.             Text_hand();
  818.             break;
  819.         case 3:
  820.             ic=3;
  821.             Text_hand();
  822.             break;
  823.         case 4:
  824.             ic=4;
  825.             Text_hand();
  826.             break;
  827.         case 5:
  828.             ic=5;
  829.             Text_hand();
  830.             break;
  831.         case 6:
  832.             ic=6;
  833.             Text_hand();
  834.             break;
  835.         case 7:
  836.             ic=7;
  837.             Text_hand();
  838.             break;
  839.         case 8:
  840.             ic=8;
  841.             Text_hand();
  842.             break;
  843.         case 9:
  844.             ic=9;
  845.             Text_hand();
  846.             break;
  847.         case 11:
  848.             gad_xpos=221;
  849.             posse=0;
  850.             RemoveGadget(Window1,&  gad[11]);
  851.             RemoveGadget(Window1,&  gad[12]);
  852.             RemoveGadget(Window1,&gad[13]);
  853.             RemoveGadget(Window1,&gad[14]);
  854.             RemoveGadget(Window1,&gad[15]);
  855.             gad[11].Flags |= SELECTED;
  856.             gad[12].Flags &= ~SELECTED;
  857.             gad[13].Flags &= ~SELECTED;
  858.             gad[14].Flags &= ~SELECTED;
  859.             gad[15].Flags &= ~SELECTED;
  860.             WaitTOF();
  861.             AddGadget(Window1,&gad[11]);
  862.             AddGadget(Window1,&gad[12]);
  863.             AddGadget(Window1,&gad[13]);
  864.             AddGadget(Window1,&gad[14]);
  865.             AddGadget(Window1,&gad[15]);
  866.             RefreshGadgets(&gad[1],Window1);
  867.             break;
  868.         case 12:
  869.             gad_xpos=237;
  870.             posse=1;
  871.             RemoveGadget(Window1,&gad[11]);
  872.             RemoveGadget(Window1,&gad[12]);
  873.             RemoveGadget(Window1,&gad[13]);
  874.             RemoveGadget(Window1,&gad[14]);
  875.             RemoveGadget(Window1,&gad[15]);
  876.             gad[12].Flags |= SELECTED;
  877.             gad[11].Flags &= ~SELECTED;
  878.             gad[13].Flags &= ~SELECTED;
  879.             gad[14].Flags &= ~SELECTED;
  880.             gad[15].Flags &= ~SELECTED;
  881.             WaitTOF();
  882.             AddGadget(Window1,&gad[11]);
  883.             AddGadget(Window1,&gad[12]);
  884.             AddGadget(Window1,&gad[13]);
  885.             AddGadget(Window1,&gad[14]);
  886.             AddGadget(Window1,&gad[15]);
  887.             RefreshGadgets(&gad[1],Window1);
  888.             break;
  889.         case 13:
  890.             gad_xpos=256;
  891.             posse=2;
  892.             RemoveGadget(Window1,&gad[11]);
  893.             RemoveGadget(Window1,&gad[12]);
  894.             RemoveGadget(Window1,&gad[13]);
  895.             RemoveGadget(Window1,&gad[14]);
  896.             RemoveGadget(Window1,&gad[15]);
  897.             gad[13].Flags |= SELECTED;
  898.             gad[11].Flags &= ~SELECTED;
  899.             gad[12].Flags &= ~SELECTED;
  900.             gad[14].Flags &= ~SELECTED;
  901.             gad[15].Flags &= ~SELECTED;
  902.             WaitTOF();
  903.             AddGadget(Window1,&gad[11]);
  904.             AddGadget(Window1,&gad[12]);
  905.             AddGadget(Window1,&gad[13]);
  906.             AddGadget(Window1,&gad[14]);
  907.             AddGadget(Window1,&gad[15]);
  908.             RefreshGadgets(&gad[1],Window1);
  909.             break;
  910.         case 14:
  911.             gad_xpos=274;
  912.             posse=3;
  913.             RemoveGadget(Window1,&gad[11]);
  914.             RemoveGadget(Window1,&gad[12]);
  915.             RemoveGadget(Window1,&gad[13]);
  916.             RemoveGadget(Window1,&gad[14]);
  917.             RemoveGadget(Window1,&gad[15]);
  918.             gad[14].Flags |= SELECTED;
  919.             gad[12].Flags &= ~SELECTED;
  920.             gad[13].Flags &= ~SELECTED;
  921.             gad[11].Flags &= ~SELECTED;
  922.             gad[15].Flags &= ~SELECTED;
  923.             WaitTOF();
  924.             AddGadget(Window1,&gad[11]);
  925.             AddGadget(Window1,&gad[12]);
  926.             AddGadget(Window1,&gad[13]);
  927.             AddGadget(Window1,&gad[14]);
  928.             AddGadget(Window1,&gad[15]);
  929.             RefreshGadgets(&gad[1],Window1);
  930.             break;
  931.         case 15:
  932.             RemoveGadget(Window1,&gad[11]);
  933.             RemoveGadget(Window1,&gad[12]);
  934.             RemoveGadget(Window1,&gad[13]);
  935.             RemoveGadget(Window1,&gad[14]);
  936.             RemoveGadget(Window1,&gad[15]);
  937.             gad[15].Flags |= SELECTED;
  938.             gad[11].Flags &= ~SELECTED;
  939.             gad[12].Flags &= ~SELECTED;
  940.             gad[13].Flags &= ~SELECTED;
  941.             gad[14].Flags &= ~SELECTED;
  942.             WaitTOF();
  943.             AddGadget(Window1,&gad[11]);
  944.             AddGadget(Window1,&gad[12]);
  945.             AddGadget(Window1,&gad[13]);
  946.             AddGadget(Window1,&gad[14]);
  947.             AddGadget(Window1,&gad[15]);
  948.             RefreshGadgets(&gad[1],Window1);
  949.             gvoff++;
  950.             if(gvoff>8) 
  951.               gvoff=1;
  952.             Move(Window1->RPort,LEFTGUESS,TOPGUESS+12*gvoff);
  953.             Text(Window1->RPort,&guess[0],4);
  954.             CompareB();
  955.             CompareW();
  956.             PrintBW();
  957.             break;
  958.         case 16:
  959.             RemoveGadget(Window1,&gad[16]);
  960.             RemoveGadget(Window1,&gad[11]);
  961.             RemoveGadget(Window1,&gad[12]);
  962.             RemoveGadget(Window1,&gad[13]);
  963.             RemoveGadget(Window1,&gad[14]);
  964.             RemoveGadget(Window1,&gad[15]);
  965.             gad[16].Flags |= SELECTED;
  966.             gad[11].Flags &= ~SELECTED;
  967.             gad[12].Flags &= ~SELECTED;
  968.             gad[13].Flags &= ~SELECTED;
  969.             gad[14].Flags &= ~SELECTED;
  970.             gad[15].Flags &= ~SELECTED;
  971.             AddGadget(Window1,&gad[1]);
  972.             AddGadget(Window1,&gad[2]);
  973.             AddGadget(Window1,&gad[3]);
  974.             AddGadget(Window1,&gad[4]);
  975.             AddGadget(Window1,&gad[5]);
  976.             AddGadget(Window1,&gad[6]);
  977.             AddGadget(Window1,&gad[7]);
  978.             AddGadget(Window1,&gad[8]);
  979.             AddGadget(Window1,&gad[9]);
  980.             AddGadget(Window1,&gad[0]);
  981.             AddGadget(Window1,&gad[11]);
  982.             AddGadget(Window1,&gad[12]);
  983.             AddGadget(Window1,&gad[13]);
  984.             AddGadget(Window1,&gad[14]);
  985.             AddGadget(Window1,&gad[15]);
  986.             AddGadget(Window1,&gad[16]);
  987.             RefreshGadgets(&gad[1],Window1);
  988.             ReInit();
  989.   }
  990. }
  991.  
  992. CompareB()
  993. {
  994.   int dd,ee;
  995.    for(ee=0;ee<4;ee++)
  996.    {
  997.       guess_temp[ee]=guess[ee];
  998.    }
  999.    ee=0;
  1000.    for(ee=0;ee<4;ee++)
  1001.    {
  1002.       answer_temp[ee]=answer[ee];
  1003.    }
  1004.    for(dd=0;dd<4;dd++)
  1005.    {
  1006.       if(guess_temp[dd]==answer_temp[dd])
  1007.       {
  1008.         black++;
  1009.         answer_temp[dd]=wrong[dd];
  1010.         guess_temp[dd]=wrong2[dd];
  1011.       }
  1012.    }
  1013. }
  1014.  
  1015. CompareW()
  1016. {
  1017.  int count,iq,ee;
  1018.   for(ee=0;ee<4;ee++){
  1019.      gs[ee].number=guess_temp[ee];
  1020.      gs[ee].numpos=ee;
  1021.   }
  1022.   for(count=0;count<4;count++)
  1023.   {
  1024.      iq=0;
  1025.      for(iq=0;iq<4;iq++)
  1026.      {
  1027.         if(gs[count].number==answer_temp[iq]&&gs[count].numpos!=iq)
  1028.         {
  1029.           gs[count].number=wrong3[count];
  1030.           answer_temp[iq]=wrong4[count];
  1031.           white++;
  1032.         }
  1033.      }
  1034.   }
  1035. }
  1036.  
  1037. GetAnswer()
  1038. {
  1039.  int s,e;
  1040.   for(s=0;s<4;s++)
  1041.   {
  1042.      e=rand()%9;
  1043.      answer[s]=text1[e];
  1044.   }
  1045. }
  1046.  
  1047. PrintBW()
  1048. {
  1049.  int f;
  1050.  f=0;
  1051.   for(f=0;f<black;f++)
  1052.   {
  1053.      SetAPen(Window1->RPort,0);
  1054.      RectFill(Window1->RPort,LFTBW+8*hoff,TOPBW+8+toff,LFTBW+5+8*hoff,TOPBW+6+8+toff);
  1055.      hoff++;
  1056.   }
  1057.   f=0;
  1058.   SetAPen(Window1->RPort,1);
  1059.   for(f=0;f<white;f++)
  1060.   {
  1061.      RectFill(Window1->RPort,LFTBW+8*hoff,TOPBW+8+toff,LFTBW+5+8*hoff,TOPBW+6+8+toff);
  1062.      hoff++;
  1063.   }
  1064.   if(toff!=84)
  1065.   {
  1066.     toff=toff+12;
  1067.   }
  1068.    else
  1069.    {
  1070.       if(black!=4)
  1071.       {
  1072.         toff=0;
  1073.         PrintAns();
  1074.         SayLose();
  1075.         ShutOffGads();
  1076.       }
  1077.    }
  1078.   if(black==4)
  1079.   {
  1080.     toff=0;
  1081.     PrintAns();
  1082.     SayWin();
  1083.     ShutOffGads();
  1084.   }
  1085.   black=0;
  1086.   white=0;
  1087.   SetAPen(Window1->RPort,19);
  1088.   hoff=0;
  1089. }
  1090.  
  1091. speechD()
  1092. {
  1093.   writeport = CreatePort(0,0);
  1094.   if(writeport == NULL) 
  1095.   { 
  1096.     error=CREATE_PORT_PROBLEMS; 
  1097.     exit(FALSE);
  1098.   }
  1099.   readport = CreatePort(0,0);
  1100.   if(readport == NULL) { 
  1101.     error=CREATE_PORT_PROBLEMS; 
  1102.     exit(FALSE); 
  1103.   }
  1104.   writeNarrator = (struct narrator_rb *)CreateExtIO(writeport,sizeof(struct narrator_rb));
  1105.   if(writeNarrator == NULL) 
  1106.   { 
  1107.     error=CREATE_IO_PROBLEMS; 
  1108.     exit(FALSE); 
  1109.   }
  1110.   readNarrator=(struct mouth_rb *)CreateExtIO(readport,sizeof(struct mouth_rb));
  1111.   if(readNarrator == NULL) 
  1112.   { 
  1113.     error=CREATE_IO_PROBLEMS;
  1114.     exit(FALSE); 
  1115.   }
  1116.   writeNarrator->ch_masks = (audChanMasks);
  1117.   writeNarrator->nm_masks = sizeof(audChanMasks);
  1118.   writeNarrator->message.io_Data = (APTR)outputstring;
  1119.   writeNarrator->message.io_Length = strlen(outputstring);
  1120.   writeNarrator->mouths = 1;
  1121.   writeNarrator->message.io_Command = CMD_WRITE;
  1122.   error=OpenDevice("narrator.device",0,writeNarrator,0);
  1123.   if(error != 0)
  1124.   {
  1125.     printf("oops...Narrator device not in devs directory,Sam.\n");
  1126.     exit(FALSE);
  1127.   }
  1128.   readNarrator->voice.message.io_Device=writeNarrator->message.io_Device;
  1129.   readNarrator->voice.message.io_Unit=writeNarrator->message.io_Unit;
  1130.   readNarrator->width=0;
  1131.   readNarrator->height=0;
  1132.   readNarrator->voice.message.io_Command=CMD_READ;
  1133.   readNarrator->voice.message.io_Error=0;
  1134.   writeError = SendIO(writeNarrator);
  1135.   if(writeError!=NULL) 
  1136.   { 
  1137.     error=CANT_PERFORM_WRITE; 
  1138.     exit(FALSE); 
  1139.   }
  1140.   while((readError=readNarrator->voice.message.io_Error)!=ND_NoWrite)
  1141.   {
  1142.        DoIO(readNarrator);
  1143.        DrawMouth(readNarrator->width,readNarrator->height);
  1144.   }
  1145. }
  1146. DrawMouth(w,h)
  1147. SHORT w,h;
  1148. {
  1149.   return(0);
  1150. }
  1151.  
  1152. int strlen(string)
  1153. char *string;
  1154. {
  1155.  int i,length;
  1156.   length = -1;
  1157.   for(i=0; i<256; i++)
  1158.   {
  1159.      if(*string++=='\0')
  1160.      {
  1161.        length = i+1;
  1162.        break;
  1163.      };
  1164.   }
  1165.   return(length);
  1166. }
  1167.  
  1168. struct IORequest *CreateExtIO(ioReplyPort,size)
  1169. struct MsgPort *ioReplyPort;
  1170. LONG size;
  1171. {
  1172.   struct IORequest *ioReq;
  1173.   if(ioReplyPort == 0)
  1174.     return ((struct IORequest *)0);
  1175.     ioReq = (struct IORequest *)AllocMem(size, MEMF_CLEAR | MEMF_PUBLIC);
  1176.   if(ioReq == 0)
  1177.     return ((struct IORequest *)0);
  1178.   ioReq -> io_Message.mn_Node.ln_Type = NT_MESSAGE;
  1179.   ioReq -> io_Message.mn_Node.ln_Pri = 0;
  1180.   ioReq -> io_Message.mn_ReplyPort = ioReplyPort;
  1181.   ioReq -> io_Message.mn_Length = (size - sizeof(struct Message));
  1182.   return (ioReq);
  1183. }
  1184.  
  1185. DeleteExtIO(ioExt,size)
  1186. struct IORequest *ioExt;
  1187. LONG size;
  1188. {
  1189.   ioExt -> io_Message.mn_Node.ln_Type = 0xff;
  1190.   ioExt -> io_Device = (struct Device *) -1;
  1191.   ioExt -> io_Unit = (struct Unit *) -1;
  1192.   FreeMem (ioExt, size);
  1193. }
  1194.  
  1195. SayLose()
  1196. {
  1197.  int rsay;
  1198.   CurrentTime(&Seconds,&Micros);
  1199.   srand(Micros);
  1200.   rsay=rand()%50;
  1201.   rtnCode = Translate("The envelope please. Sorry. The correct number was",95,outputstring,500);
  1202.   writeNarrator->message.io_Data = (APTR)outputstring;
  1203.   writeNarrator->message.io_Length = strlen(outputstring);
  1204.   DoIO(writeNarrator);
  1205.   rtnCode = Translate(&answer[0],4,outputstring,500);
  1206.   writeNarrator->message.io_Data = (APTR)outputstring;
  1207.   writeNarrator->message.io_Length = strlen(outputstring);
  1208.   DoIO(writeNarrator);
  1209.    switch(rsay)
  1210.    {
  1211.         case 1:
  1212.             rtnCode=Translate("Better luck next time Doe bee.",55,outputstring,500);
  1213.             writeNarrator->message.io_Data = (APTR)outputstring;
  1214.             writeNarrator->message.io_Length=strlen(outputstring);
  1215.             DoIO(writeNarrator);
  1216.             break;
  1217.         case 2:
  1218.             rtnCode=Translate("Your answer is as logical as a pickpocket in a nudist colony.",137,outputstring,500);
  1219.             writeNarrator->message.io_Data = (APTR)outputstring;
  1220.             writeNarrator->message.io_Length=strlen(outputstring);
  1221.             DoIO(writeNarrator);
  1222.             break;
  1223.         case 3:
  1224.             rtnCode = Translate("Larry Bud Melmin would be a good match for you.",50,outputstring,500);
  1225.             writeNarrator->message.io_Data = (APTR)outputstring;
  1226.             writeNarrator->message.io_Length = strlen(outputstring);
  1227.             DoIO(writeNarrator);
  1228.             break;
  1229.         case 4:
  1230.             rtnCode=Translate("u lose. Youl never make Stupid Human tricks on Letterman at this rate.",150,outputstring,500);
  1231.             writeNarrator->message.io_Data = (APTR)outputstring;
  1232.             writeNarrator->message.io_Length = strlen(outputstring);
  1233.             DoIO(writeNarrator);
  1234.             break;
  1235.         case 5:
  1236.             rtnCode = Translate("hay,thats o k,we are all boe zoes on this bus.",94,outputstring,500);
  1237.             writeNarrator->message.io_Data = (APTR)outputstring;
  1238.             writeNarrator->message.io_Length = strlen(outputstring);
  1239.             DoIO(writeNarrator);
  1240.             break;
  1241.         case 6:
  1242.             rtnCode = Translate("Your a victim of",30,outputstring,500);
  1243.             writeNarrator->message.io_Data = (APTR)outputstring;
  1244.             writeNarrator->message.io_Length = strlen(outputstring);
  1245.             DoIO(writeNarrator);
  1246.             rtnCode = Translate("soycumstance.",30,outputstring,500);
  1247.             writeNarrator->message.io_Data = (APTR)outputstring;
  1248.             writeNarrator->message.io_Length = strlen(outputstring);
  1249.             writeNarrator->pitch = MAXPITCH;
  1250.             DoIO(writeNarrator);
  1251.             writeNarrator->pitch = DEFPITCH;
  1252.             break;
  1253.         case 7:
  1254.             rtnCode = Translate("Yuck. Yuck. Gag me with a spoon.",69,outputstring,500);
  1255.             writeNarrator->message.io_Data = (APTR)outputstring;
  1256.             writeNarrator->message.io_Length = strlen(outputstring);
  1257.             DoIO(writeNarrator);
  1258.             break;
  1259.         case 8:
  1260.             rtnCode = Translate("Sorry about that chief. Give it up!",96,outputstring,500);
  1261.             writeNarrator->message.io_Data = (APTR)outputstring;
  1262.             writeNarrator->message.io_Length = strlen(outputstring);
  1263.             DoIO(writeNarrator);
  1264.             break;
  1265.         case 9:
  1266.             rtnCode=Translate("Well, well. You thought this was easy. huh?",50,outputstring,500);
  1267.             writeNarrator->message.io_Data = (APTR)outputstring;
  1268.             writeNarrator->message.io_Length = strlen(outputstring);
  1269.             DoIO(writeNarrator);
  1270.             break;
  1271.         case 10:
  1272.             rtnCode=Translate("No way ho zay. You struck out. Youve benn zapped. Smoked. Dusted. Blown away. Dun in.",134,outputstring,500);
  1273.             writeNarrator->message.io_Data = (APTR)outputstring;
  1274.             writeNarrator->message.io_Length = strlen(outputstring);
  1275.             DoIO(writeNarrator);
  1276.             break;
  1277.         case 11:
  1278.             rtnCode = Translate("Excuze me. You, yes you. Looking at my screen.",85,outputstring,500);
  1279.             writeNarrator->message.io_Data = (APTR)outputstring;
  1280.             writeNarrator->message.io_Length = strlen(outputstring);
  1281.             DoIO(writeNarrator);
  1282.             rtnCode=Translate("Are you sure you are paying attention?",75,outputstring,500);
  1283.             writeNarrator->message.io_Data = (APTR)outputstring;
  1284.             writeNarrator->message.io_Length = strlen(outputstring);
  1285.             DoIO(writeNarrator);
  1286.             break;
  1287.         case 12:
  1288.             rtnCode=Translate("Hay u,would John Wayne lose at this game? Never.",87,outputstring,500);
  1289.             writeNarrator->message.io_Data = (APTR)outputstring;
  1290.             writeNarrator->message.io_Length = strlen(outputstring);
  1291.             DoIO(writeNarrator);
  1292.             break;
  1293.         case 13:
  1294.             rtnCode=Translate("good sir. This one of thoze slings, And Airows of",92,outputstring,500);
  1295.             writeNarrator->message.io_Data = (APTR)outputstring;
  1296.             writeNarrator->message.io_Length = strlen(outputstring);
  1297.             DoIO(writeNarrator);
  1298.             rtnCode=Translate("outrajeeus fortune that Bill shake spear warned u about",102,outputstring,500);
  1299.             writeNarrator->message.io_Data = (APTR)outputstring;
  1300.             writeNarrator->message.io_Length = strlen(outputstring);
  1301.             DoIO(writeNarrator);
  1302.             break;
  1303.         case 14:
  1304.             rtnCode=Translate("Its not wether you win or lose,its how well u cheet",102,outputstring,500);
  1305.             writeNarrator->message.io_Data = (APTR)outputstring;
  1306.             writeNarrator->message.io_Length = strlen(outputstring);
  1307.             DoIO(writeNarrator);
  1308.             break;
  1309.         case 15:
  1310.             rtnCode=Translate("You lose. Be sure and be a good sport about it.",82,outputstring,500);
  1311.             writeNarrator->message.io_Data = (APTR)outputstring;
  1312.             writeNarrator->message.io_Length = strlen(outputstring);
  1313.             DoIO(writeNarrator);
  1314.             break;
  1315.         case 16:
  1316.             rtnCode=Translate("Not this time, doabee. You learn from your mistakes.",92,outputstring,500);
  1317.             writeNarrator->message.io_Data = (APTR)outputstring;
  1318.             writeNarrator->message.io_Length = strlen(outputstring);
  1319.             DoIO(writeNarrator);
  1320.             break;
  1321.         case 17:
  1322.             rtnCode=Translate("Well, just think,you have plenty in cawmon with the baltimore orioles.",130,outputstring,500);
  1323.             writeNarrator->message.io_Data = (APTR)outputstring;
  1324.             writeNarrator->message.io_Length = strlen(outputstring);
  1325.             DoIO(writeNarrator);
  1326.             break;
  1327.         case 18:
  1328.             rtnCode=Translate("Humm. Do The words bom out come to mind.",92,outputstring,500);
  1329.             writeNarrator->message.io_Data = (APTR)outputstring;
  1330.             writeNarrator->message.io_Length = strlen(outputstring);
  1331.             DoIO(writeNarrator);
  1332.             break;
  1333.         case 19:
  1334.             rtnCode=Translate("To get the Hint book on the answer, send all your money to Infoa Com. They have most of it anyway.",162,outputstring,500);
  1335.             writeNarrator->message.io_Data = (APTR)outputstring;
  1336.             writeNarrator->message.io_Length = strlen(outputstring);
  1337.             DoIO(writeNarrator);
  1338.             break;
  1339.         case 20:
  1340.             rtnCode=Translate("You lost. Go to your room. Do not pass Go,Do not collect 2 hundred dollars",145,outputstring,500);
  1341.             writeNarrator->message.io_Data = (APTR)outputstring;
  1342.             writeNarrator->message.io_Length = strlen(outputstring);
  1343.             DoIO(writeNarrator);
  1344.             break;
  1345.         case 21:
  1346.             rtnCode=Translate("Sorry about that chief, you flunked.",90,outputstring,500);
  1347.             writeNarrator->message.io_Data = (APTR)outputstring;
  1348.             writeNarrator->message.io_Length=strlen(outputstring);
  1349.             DoIO(writeNarrator);
  1350.             break;
  1351.         case 22:
  1352.             rtnCode=Translate("U Dropped the ball on this one, doabee. No gaytoraid for you.",250,outputstring,500);
  1353.             writeNarrator->message.io_Data = (APTR)outputstring;
  1354.             writeNarrator->message.io_Length=strlen(outputstring);
  1355.             DoIO(writeNarrator);
  1356.             break;
  1357.         case 23:
  1358.             rtnCode=Translate("Your brain has turned to a mass of jello.",50,outputstring,500);
  1359.             writeNarrator->message.io_Data = (APTR)outputstring;
  1360.             writeNarrator->message.io_Length=strlen(outputstring);
  1361.             DoIO(writeNarrator);
  1362.             break;
  1363.         case 24:
  1364.             rtnCode=Translate("By any chance, Do you have two brothers named Daril?",150,outputstring,500);
  1365.             writeNarrator->message.io_Data = (APTR)outputstring;
  1366.             writeNarrator->message.io_Length=strlen(outputstring);
  1367.             DoIO(writeNarrator);
  1368.             break;
  1369.         case 25:
  1370.             rtnCode=Translate("A wise man once said. If at first u doant succeed, forget it, and go watch bullwinkle cartoons.",200,outputstring,500);
  1371.             writeNarrator->message.io_Data = (APTR)outputstring;
  1372.             writeNarrator->message.io_Length=strlen(outputstring);
  1373.             DoIO(writeNarrator);
  1374.             break;
  1375.         case 26:
  1376.             rtnCode=Translate("My advice is . Keep your day job.",50,outputstring,500);
  1377.             writeNarrator->message.io_Data = (APTR)outputstring;
  1378.             writeNarrator->message.io_Length=strlen(outputstring);
  1379.             DoIO(writeNarrator);
  1380.             break;
  1381.         case 27:
  1382.             rtnCode=Translate("When one has lost, it is good to remember. It is better to light one candle than to stub your toa.",250,outputstring,500);
  1383.             writeNarrator->message.io_Data = (APTR)outputstring;
  1384.             writeNarrator->message.io_Length=strlen(outputstring);
  1385.             DoIO(writeNarrator);
  1386.             break;
  1387.         case 28:
  1388.             rtnCode=Translate("You are the Bob uKer of logic games.",70,outputstring,500);
  1389.             writeNarrator->message.io_Data = (APTR)outputstring;
  1390.             writeNarrator->message.io_Length=strlen(outputstring);
  1391.             DoIO(writeNarrator);
  1392.             break;
  1393.         case 29:
  1394.             rtnCode=Translate("You forgot to burn your Atari S T as a sacrificial offering to the gods of logic this morning.",250,outputstring,500);
  1395.             writeNarrator->message.io_Data = (APTR)outputstring;
  1396.             writeNarrator->message.io_Length=strlen(outputstring);
  1397.             DoIO(writeNarrator);
  1398.             break;
  1399.         case 30:
  1400.             rtnCode=Translate("You are now condemned to work for I B M for the rest of your natural life. After that, your on your own.",255,outputstring,500);
  1401.             writeNarrator->message.io_Data = (APTR)outputstring;
  1402.             writeNarrator->message.io_Length=strlen(outputstring);
  1403.             DoIO(writeNarrator);
  1404.             break;
  1405.         case 31:
  1406.             rtnCode=Translate("I forgot to mention. Because you lost, you are now my indentured servant.",255,outputstring,500);
  1407.             writeNarrator->message.io_Data = (APTR)outputstring;
  1408.             writeNarrator->message.io_Length=strlen(outputstring);
  1409.             DoIO(writeNarrator);
  1410.             break;
  1411.         case 32:
  1412.             rtnCode=Translate("I would play taps for you but Jack Tramiel sat on my trumpet.",155,outputstring,500);
  1413.             writeNarrator->message.io_Data = (APTR)outputstring;
  1414.             writeNarrator->message.io_Length=strlen(outputstring);
  1415.             DoIO(writeNarrator);
  1416.             break;
  1417.         case 33:
  1418.             rtnCode=Translate("Well, at least you could go on Donahue and give your story. If you won u could have gone on Oapra",255,outputstring,500);
  1419.             writeNarrator->message.io_Data = (APTR)outputstring;
  1420.             writeNarrator->message.io_Length=strlen(outputstring);
  1421.             DoIO(writeNarrator);
  1422.             break;
  1423.         case 34:
  1424.             rtnCode=Translate("I'll take the tyetil to your house,now please.",85,outputstring,500);
  1425.             writeNarrator->message.io_Data = (APTR)outputstring;
  1426.             writeNarrator->message.io_Length=strlen(outputstring);
  1427.             DoIO(writeNarrator);
  1428.             break;
  1429.         case 35:
  1430.             rtnCode=Translate("If u lose again u will have to listen to my phoanee voice for seven days strait.",255,outputstring,500);
  1431.             writeNarrator->message.io_Data = (APTR)outputstring;
  1432.             writeNarrator->message.io_Length=strlen(outputstring);
  1433.             DoIO(writeNarrator);
  1434.             break;
  1435.         case 36:
  1436.             rtnCode=Translate("Hey, Burger king is looking for help.",55,outputstring,500);
  1437.             writeNarrator->message.io_Data = (APTR)outputstring;
  1438.             writeNarrator->message.io_Length=strlen(outputstring);
  1439.             DoIO(writeNarrator);
  1440.             break;
  1441.         case 37:
  1442.             rtnCode=Translate("I am the gordon gecko of games. Winning is good. Greed is good. ben and jerries ice cream is good.",255,outputstring,500);
  1443.             writeNarrator->message.io_Data = (APTR)outputstring;
  1444.             writeNarrator->message.io_Length=strlen(outputstring);
  1445.             DoIO(writeNarrator);
  1446.             break;
  1447.         case 38:
  1448.             rtnCode=Translate("Got u on a called third strike. Yoa.",255,outputstring,500);
  1449.             writeNarrator->message.io_Data = (APTR)outputstring;
  1450.             writeNarrator->message.io_Length=strlen(outputstring);
  1451.             DoIO(writeNarrator);
  1452.             break;
  1453.         case 39:
  1454.             rtnCode=Translate("Rivenge is mine.",255,outputstring,500);
  1455.             writeNarrator->message.io_Data = (APTR)outputstring;
  1456.             writeNarrator->message.io_Length=strlen(outputstring);
  1457.             DoIO(writeNarrator);
  1458.             break;
  1459.         case 40:
  1460.             rtnCode=Translate("There u go. All intelligence is artificial.",85,outputstring,500);
  1461.             writeNarrator->message.io_Data = (APTR)outputstring;
  1462.             writeNarrator->message.io_Length=strlen(outputstring);
  1463.             DoIO(writeNarrator);
  1464.             break;
  1465.         case 41:
  1466.             rtnCode=Translate("take 2 asperin and doant call me.",255,outputstring,500);
  1467.             writeNarrator->message.io_Data = (APTR)outputstring;
  1468.             writeNarrator->message.io_Length=strlen(outputstring);
  1469.             DoIO(writeNarrator);
  1470.             break;
  1471.         case 42:
  1472.             rtnCode=Translate("ha ha ha ha ha ha ha ha ha ha ha ha ha ha. Enuff said.",255,outputstring,500);
  1473.             writeNarrator->message.io_Data = (APTR)outputstring;
  1474.             writeNarrator->message.io_Length=strlen(outputstring);
  1475.             DoIO(writeNarrator);
  1476.             break;
  1477.         case 43:
  1478.             rtnCode=Translate("as W C said, never give a sucker an even             break.",255,outputstring,500);
  1479.             writeNarrator->message.io_Data = (APTR)outputstring;
  1480.             writeNarrator->message.io_Length=strlen(outputstring);
  1481.             DoIO(writeNarrator);
  1482.             break;
  1483.         case 44:
  1484.             rtnCode=Translate("All in all eyed rather be in filidelfia.",155,outputstring,500);
  1485.             writeNarrator->message.io_Data = (APTR)outputstring;
  1486.             writeNarrator->message.io_Length=strlen(outputstring);
  1487.             DoIO(writeNarrator);
  1488.             break;
  1489.         case 45:
  1490.             rtnCode=Translate("go back to bayker street, sherlock.",85,outputstring,500);
  1491.             writeNarrator->message.io_Data = (APTR)outputstring;
  1492.             writeNarrator->message.io_Length=strlen(outputstring);
  1493.             DoIO(writeNarrator);
  1494.             break;
  1495.         case 46:
  1496.             rtnCode=Translate("do u no that u use fewer facial mussles when u win than wen u lose",255,outputstring,500);
  1497.             writeNarrator->message.io_Data = (APTR)outputstring;
  1498.             writeNarrator->message.io_Length=strlen(outputstring);
  1499.             DoIO(writeNarrator);
  1500.             break;
  1501.         case 47:
  1502.             rtnCode=Translate("say it over and over. losing can be fun. losing can be fun. Losing can be fun.",255,outputstring,500);
  1503.             writeNarrator->message.io_Data = (APTR)outputstring;
  1504.             writeNarrator->message.io_Length=strlen(outputstring);
  1505.             DoIO(writeNarrator);
  1506.             break;
  1507.         case 48:
  1508.             rtnCode=Translate("i would say better luck next time but u probably wont help.",175,outputstring,500);
  1509.             writeNarrator->message.io_Data = (APTR)outputstring;
  1510.             writeNarrator->message.io_Length=strlen(outputstring);
  1511.             DoIO(writeNarrator);
  1512.             break;
  1513.         case 49:
  1514.             rtnCode=Translate("guess what. a simple number game just beat you out.",155,outputstring,500);
  1515.             writeNarrator->message.io_Data = (APTR)outputstring;
  1516.             writeNarrator->message.io_Length=strlen(outputstring);
  1517.             DoIO(writeNarrator);
  1518.             break;
  1519.         case 50:
  1520.             rtnCode=Translate("go wash the dog.",55,outputstring,500);
  1521.             writeNarrator->message.io_Data = (APTR)outputstring;
  1522.             writeNarrator->message.io_Length=strlen(outputstring);
  1523.             DoIO(writeNarrator);
  1524.             break;
  1525.    }
  1526. }
  1527.  
  1528. SayWin()
  1529. {
  1530.  int rsay2;
  1531.   CurrentTime(&Seconds,&Micros);
  1532.   rtnCode=Translate("We have a winner.",45,outputstring,500);
  1533.   writeNarrator->message.io_Data = (APTR)outputstring;
  1534.   writeNarrator->message.io_Length = strlen(outputstring);
  1535.   DoIO(writeNarrator);
  1536.   srand(Micros);
  1537.   rsay2=rand()%30;
  1538.    switch(rsay2)
  1539.    {
  1540.         case 0:
  1541.             rtnCode=Translate("You guessed it by gum. You got four big ones.",68,outputstring,500);
  1542.             writeNarrator->message.io_Data = (APTR)outputstring;
  1543.             writeNarrator->message.io_Length = strlen(outputstring);
  1544.             DoIO(writeNarrator);
  1545.             break;
  1546.         case 1:
  1547.             rtnCode=Translate("You Win,Cisco. Your mother would be proud. ",83,outputstring,500);
  1548.             writeNarrator->message.io_Data = (APTR)outputstring;
  1549.             writeNarrator->message.io_Length = strlen(outputstring);
  1550.             DoIO(writeNarrator);
  1551.             break;
  1552.         case 2:
  1553.             rtnCode=Translate("mister Spock would be exceedingly proud of your logic",75,outputstring,500);
  1554.             writeNarrator->message.io_Data = (APTR)outputstring;
  1555.             writeNarrator->message.io_Length = strlen(outputstring);
  1556.             DoIO(writeNarrator);
  1557.             break;
  1558.         case 3:
  1559.             rtnCode = Translate("Nice Going,ACE. Wheel let u out of jail now.",85,outputstring,500);
  1560.             writeNarrator->message.io_Data = (APTR)outputstring;
  1561.             writeNarrator->message.io_Length = strlen(outputstring);
  1562.             DoIO(writeNarrator);
  1563.             break;
  1564.         case 4:
  1565.             rtnCode=Translate("as Fill Rizzutoe would say. HOELEY KAOW",65,outputstring,500);
  1566.             writeNarrator->message.io_Data = (APTR)outputstring;
  1567.             writeNarrator->message.io_Length = strlen(outputstring);
  1568.             DoIO(writeNarrator);
  1569.             break;
  1570.         case 5:
  1571.             rtnCode=Translate("not bad. And you own an Amiga ,too. Chalk up 2 for u",99,outputstring,500);
  1572.             writeNarrator->message.io_Data = (APTR)outputstring;
  1573.             writeNarrator->message.io_Length = strlen(outputstring);
  1574.             DoIO(writeNarrator);
  1575.             break;
  1576.         case 6:
  1577.             rtnCode=Translate("hay Ace. Good thinking. Or was it dum luck?",65,outputstring,500);
  1578.             writeNarrator->message.io_Data = (APTR)outputstring;
  1579.             writeNarrator->message.io_Length = strlen(outputstring);
  1580.             DoIO(writeNarrator);
  1581.             break;
  1582.         case 7:
  1583.             rtnCode=Translate("ok you won. Go ahead and stroke your eego.",73,outputstring,500);
  1584.             writeNarrator->message.io_Data = (APTR)outputstring;
  1585.             writeNarrator->message.io_Length = strlen(outputstring);
  1586.             DoIO(writeNarrator);
  1587.             break;
  1588.         case 8:
  1589.             rtnCode=Translate("So u won,big deal. What do u want, a B M W?",76,outputstring,500);
  1590.             writeNarrator->message.io_Data = (APTR)outputstring;
  1591.             writeNarrator->message.io_Length = strlen(outputstring);
  1592.             DoIO(writeNarrator);
  1593.             break;
  1594.         case 9:
  1595.             rtnCode=Translate("All right, mick gilicutty, you did it.",62,outputstring,500);
  1596.             writeNarrator->message.io_Data = (APTR)outputstring;
  1597.             writeNarrator->message.io_Length = strlen(outputstring);
  1598.             DoIO(writeNarrator);
  1599.             break;
  1600.         case 10:
  1601.             rtnCode=Translate("your logic is impecable professor",55,outputstring,500);
  1602.             writeNarrator->message.io_Data = (APTR)outputstring;
  1603.             writeNarrator->message.io_Length = strlen(outputstring);
  1604.             DoIO(writeNarrator);
  1605.             break;
  1606.         case 11:
  1607.             rtnCode=Translate("You won. Hay. So This izzint Rocket Ranger. But as Letterman says,what did you pay for it?",145,outputstring,500);
  1608.             writeNarrator->message.io_Data = (APTR)outputstring;
  1609.             writeNarrator->message.io_Length = strlen(outputstring);
  1610.             DoIO(writeNarrator);
  1611.             break;
  1612.         case 12:
  1613.             rtnCode=Translate("You made it. You are now in the masterbrain hall of fame",75,outputstring,500);
  1614.             writeNarrator->message.io_Data = (APTR)outputstring;
  1615.             writeNarrator->message.io_Length = strlen(outputstring);
  1616.             DoIO(writeNarrator);
  1617.             break;
  1618.         case 13:
  1619.             rtnCode=Translate("You won. The gipper would be proud, by jorge",55,outputstring,500);
  1620.             writeNarrator->message.io_Data = (APTR)outputstring;
  1621.             writeNarrator->message.io_Length = strlen(outputstring);
  1622.             DoIO(writeNarrator);
  1623.             break;
  1624.         case 14:
  1625.             rtnCode=Translate("Your a winner, and I hear the fat lady singing.",210,outputstring,500);
  1626.             writeNarrator->message.io_Data = (APTR)outputstring;
  1627.             writeNarrator->message.io_Length = strlen(outputstring);
  1628.             DoIO(writeNarrator);
  1629.             break;
  1630.         case 15:
  1631.             rtnCode=Translate("You win. You are now an official Masterbrain apprentis.",155,outputstring,500);
  1632.             writeNarrator->message.io_Data = (APTR)outputstring;
  1633.             writeNarrator->message.io_Length = strlen(outputstring);
  1634.             DoIO(writeNarrator);
  1635.             break;
  1636.         case 16:
  1637.             rtnCode=Translate("Woa nelly. You have won the Masterbrain M V P award.",175,outputstring,500);
  1638.             writeNarrator->message.io_Data = (APTR)outputstring;
  1639.             writeNarrator->message.io_Length = strlen(outputstring);
  1640.             DoIO(writeNarrator);
  1641.             break;
  1642.         case 17:
  1643.             rtnCode=Translate("You did it,chief.Now on to the masterbrain world series.",155,outputstring,500);
  1644.             writeNarrator->message.io_Data = (APTR)outputstring;
  1645.             writeNarrator->message.io_Length = strlen(outputstring);
  1646.             DoIO(writeNarrator);
  1647.             break;
  1648.         case 18:
  1649.             rtnCode=Translate("Excellent choice. You get 60 brownee points.",95,outputstring,500);
  1650.             writeNarrator->message.io_Data = (APTR)outputstring;
  1651.             writeNarrator->message.io_Length = strlen(outputstring);
  1652.             DoIO(writeNarrator);
  1653.             break;
  1654.         case 19:
  1655.             rtnCode=Translate("I can't beleeve your brainpower. o o pinch me.",190,outputstring,500);
  1656.             writeNarrator->message.io_Data = (APTR)outputstring;
  1657.             writeNarrator->message.io_Length = strlen(outputstring);
  1658.             DoIO(writeNarrator);
  1659.             break;
  1660.         case 20:
  1661.             rtnCode=Translate("Strike up the band.",55,outputstring,500);
  1662.             writeNarrator->message.io_Data = (APTR)outputstring;
  1663.             writeNarrator->message.io_Length = strlen(outputstring);
  1664.             DoIO(writeNarrator);
  1665.             break;
  1666.         case 21:
  1667.             rtnCode=Translate("You win. For now. We are going to test you for steroids.",175,outputstring,500);
  1668.             writeNarrator->message.io_Data = (APTR)outputstring;
  1669.             writeNarrator->message.io_Length = strlen(outputstring);
  1670.             DoIO(writeNarrator);
  1671.             break;
  1672.         case 22:
  1673.             rtnCode=Translate("You beat me. This buds for u.",145,outputstring,500);
  1674.             writeNarrator->message.io_Data = (APTR)outputstring;
  1675.             writeNarrator->message.io_Length = strlen(outputstring);
  1676.             DoIO(writeNarrator);
  1677.             break;
  1678.         case 23:
  1679.             rtnCode=Translate("All right! Amiga. Computer of champeeons.",95,outputstring,500);
  1680.             writeNarrator->message.io_Data = (APTR)outputstring;
  1681.             writeNarrator->message.io_Length = strlen(outputstring);
  1682.             DoIO(writeNarrator);
  1683.             break;
  1684.         case 24:
  1685.             rtnCode=Translate("Jay Miner dreamed of the day you wood win this game. Hurray!.",155,outputstring,500);
  1686.             writeNarrator->message.io_Data = (APTR)outputstring;
  1687.             writeNarrator->message.io_Length = strlen(outputstring);
  1688.             DoIO(writeNarrator);
  1689.             break;
  1690.         case 25:
  1691.             rtnCode=Translate("The Master Brain has been zapped by his lowly apprentis.",145,outputstring,500);
  1692.             writeNarrator->message.io_Data = (APTR)outputstring;
  1693.             writeNarrator->message.io_Length = strlen(outputstring);
  1694.             DoIO(writeNarrator);
  1695.             break;
  1696.         case 26:
  1697.             rtnCode=Translate("You have an excellent brain. say. Do u have any hot tips for the bond market?",165,outputstring,500);
  1698.             writeNarrator->message.io_Data = (APTR)outputstring;
  1699.             writeNarrator->message.io_Length = strlen(outputstring);
  1700.             DoIO(writeNarrator);
  1701.             break;
  1702.         case 27:
  1703.             rtnCode=Translate("You won, but I cant play your national anthem. I am a louwsee singer.",175,outputstring,500);
  1704.             writeNarrator->message.io_Data = (APTR)outputstring;
  1705.             writeNarrator->message.io_Length = strlen(outputstring);
  1706.             DoIO(writeNarrator);
  1707.             break;
  1708.         case 28:
  1709.             rtnCode=Translate("Outstanding. This is better than M T V, esint it.",145,outputstring,500);
  1710.             writeNarrator->message.io_Data = (APTR)outputstring;
  1711.             writeNarrator->message.io_Length = strlen(outputstring);
  1712.             DoIO(writeNarrator);
  1713.             break;
  1714.         case 29:
  1715.             rtnCode=Translate("And before you ask, no, we doant have an audeeo daily double, nore is Vanna here.",175,outputstring,500);
  1716.             writeNarrator->message.io_Data = (APTR)outputstring;
  1717.             writeNarrator->message.io_Length = strlen(outputstring);
  1718.             DoIO(writeNarrator);
  1719.             break;
  1720.         case 30:
  1721.             rtnCode=Translate("Congradulations. Ed mac man will be at your house tummorrow with the check.",195,outputstring,500);
  1722.             writeNarrator->message.io_Data = (APTR)outputstring;
  1723.             writeNarrator->message.io_Length = strlen(outputstring);
  1724.             DoIO(writeNarrator);
  1725.             break;
  1726.    }
  1727. }
  1728.  
  1729. ReInit()
  1730. {
  1731.  int ttoff,btoff,z;
  1732.   toff=0;
  1733.   ttoff=67;
  1734.   btoff=75;
  1735.   gvoff=0;
  1736.   CurrentTime(&Seconds,&Micros);
  1737.   srand(Micros);
  1738.   GetAnswer();
  1739.   rtnCode = Translate("O k,click on each number,,good luck.",37,outputstring,500);
  1740.   writeNarrator->message.io_Data=(APTR)outputstring;
  1741.   writeNarrator->message.io_Length=strlen(outputstring);
  1742.   DoIO(writeNarrator);
  1743.   for(z=0;z<8;z++)
  1744.   {
  1745.      SetAPen(Window1->RPort,0);
  1746.      RectFill(Window1->RPort,92,ttoff,136,btoff);
  1747.      SetAPen(Window1->RPort,23);
  1748.      RectFill(Window1->RPort,141,ttoff,188,btoff);
  1749.      ttoff=ttoff+12;
  1750.      btoff=btoff+12;
  1751.      if(ttoff==163)
  1752.        ttoff=67;
  1753.      if(ttoff==171)
  1754.        btoff=75;
  1755.      }
  1756.      z=0;
  1757.      for(z=0;z<8;z++)
  1758.      {
  1759.         SetAPen(Window1->RPort,0);
  1760.         RectFill(Window1->RPort,219,98,231,111);
  1761.         SetAPen(Window1->RPort,0);
  1762.         RectFill(Window1->RPort,235,98,249,111);
  1763.         SetAPen(Window1->RPort,0);
  1764.         RectFill(Window1->RPort,253,98,267,111);
  1765.         SetAPen(Window1->RPort,0);
  1766.         RectFill(Window1->RPort,271,98,285,111);
  1767.      }
  1768.   SetAPen(Window1->RPort,3);
  1769.   RectFill(Window1->RPort,26,108,65,118);
  1770.   strcpy(&guess,&empty);
  1771.   strcpy(&guess_temp,&empty);
  1772.   SetAPen(Window1->RPort,19);
  1773.   RefreshGadgets(&gad[1],Window1);
  1774. }
  1775.  
  1776. PrintAns()
  1777. {
  1778.   SetBPen(Window1->RPort,3);
  1779.   SetAPen(Window1->RPort,0);
  1780.   Move(Window1->RPort,29,116);
  1781.   Text(Window1->RPort,&answer[0],4);
  1782.   SetAPen(Window1->RPort,19);
  1783.   SetBPen(Window1->RPort,0);
  1784.   SetAPen(Window1->RPort,19);
  1785. }
  1786.  
  1787. ShutOffGads()
  1788. {
  1789.  int gadi;
  1790.   for(gadi=0;gadi<15;gadi++)
  1791.   {
  1792.      RemoveGadget(Window1,&gad[0+gadi]);
  1793.   }
  1794. }
  1795.  
  1796. TurnOnGads()
  1797. {
  1798. int gadi;
  1799.   for(gadi=0;gadi<15;gadi++)
  1800.   {
  1801.      AddGadget(Window1,&gad[0+gadi]);
  1802.   }
  1803. }
  1804.  
  1805. About()
  1806. {
  1807.   about_t0.FrontPen=0;
  1808.   about_t0.BackPen=11;
  1809.   about_t0.DrawMode=JAM1;
  1810.   about_t0.LeftEdge=15;
  1811.   about_t0.TopEdge=10;
  1812.   about_t0.ITextFont=NULL;
  1813.   about_t0.IText=(UBYTE *)"(Freely distributable)";
  1814.   about_t0.NextText=&about_t4;
  1815.   about_t4.FrontPen=18;
  1816.   about_t4.BackPen=11;
  1817.   about_t4.DrawMode=JAM1;
  1818.   about_t4.LeftEdge=15;
  1819.   about_t4.TopEdge=20;
  1820.   about_t4.ITextFont=NULL;
  1821.   about_t4.IText=(UBYTE *)"Tourmaline Software";
  1822.   about_t4.NextText=&about_t5;
  1823.   about_t5.FrontPen=18;
  1824.   about_t5.BackPen=15;
  1825.   about_t5.DrawMode=JAM1;
  1826.   about_t5.LeftEdge=15;
  1827.   about_t5.TopEdge=30;
  1828.   about_t5.ITextFont=NULL;
  1829.   about_t5.IText=(UBYTE *)"Dana McPhee";
  1830.   about_t5.NextText=&about_t6;
  1831.   about_t6.FrontPen=0;
  1832.   about_t6.BackPen=15;
  1833.   about_t6.DrawMode=JAM1;
  1834.   about_t6.LeftEdge=15;
  1835.   about_t6.TopEdge=40;
  1836.   about_t6.ITextFont=NULL;
  1837.   about_t6.IText=(UBYTE *)"Email to IDCMP (617)769-3172";
  1838.   about_t6.NextText=NULL;
  1839.   about_t1.FrontPen=0;
  1840.   about_t1.BackPen=15;
  1841.   about_t1.DrawMode=JAM1;
  1842.   about_t1.LeftEdge=6;
  1843.   about_t1.TopEdge=3;
  1844.   about_t1.ITextFont=NULL;
  1845.   about_t1.IText=(UBYTE *)"Ying";
  1846.   about_t1.NextText=NULL;
  1847.   about_t2.FrontPen=0;
  1848.   about_t2.BackPen=15;
  1849.   about_t2.DrawMode=JAM1;
  1850.   about_t2.LeftEdge=6;
  1851.   about_t2.TopEdge=3;
  1852.   about_t2.ITextFont=NULL;
  1853.   about_t2.IText=(UBYTE *)"Yang";
  1854.   about_t2.NextText=NULL;
  1855.   pal_resp1=AutoRequest(Window1,about_t0,about_t1,about_t2,FLAGYES,FLAGNO,300,85);
  1856.   return;
  1857. }
  1858.